package cn.tedu.hongbeifang.mapper;


import cn.tedu.hongbeifang.pojo.entity.Video;
import cn.tedu.hongbeifang.pojo.vo.VideoListVO;
import cn.tedu.hongbeifang.pojo.vo.VideoStandVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface VideoMapper {
    /**
     * 插入视频数据
     *
     * @param video 视频数据
     * @return 受影响的行数
     */
    int insert(Video video);

    /**
     * 批量插入视频数据
     *
     * @param videos 视频列表
     * @return 受影响的行数
     */
    int insertBatch(List<Video> videos);

    /**
     * 根据id删除视频数据
     *
     * @param videoId 视频id
     * @return 受影响的行数
     */
    int deleteById(Long videoId);

    /**
     * 根据若干个id批量删除视频数据
     *
     * @param videoIds 若干个视频id的数组
     * @return 受影响的行数
     */
    int deleteByIds(Long[] videoIds);

    /**
     * 根据id修改视频数据
     *
     * @param video 封装了视频id和新数据的对象
     * @return 受影响的行数
     */
    int update(Video video);

    /**
     * 统计视频数据的数量
     *
     * @return 视频数据的数量
     */
    int count();

    /**
     * 根据视频名称统计数据的数量
     *
     * @param title 视频名称
     * @return 匹配名称的视频数据的数量
     */
    int countByTitle(String title);

    /**
     * 统计非某id但名称匹配的视频数据的数量，用于检查是否存在其它数据使用了相同的名称
     *
     * @param videoId   视频id
     * @param title 视频名称
     * @return 匹配名称但不匹配id的数据的数量
     */
    int countByVideoTitleAndNotId(@Param("videoId") Long videoId, @Param("title") String title);

    /**
     * 根据id查询视频数据详情
     *
     * @param videoId 视频id
     * @return 匹配的视频数据详情，如果没有匹配的数据，则返回null
     */
    VideoStandVO getStandardById(Long videoId);
    /**
     * 查询视频数据列表
     *
     * @return 视频数据列表
     */
    List<VideoListVO> list();
    
    
}
